// 例子23

{
    // 将类数组对象转换为真正的数组
    let arrayLike = {
        '0': 'a',
        '1': 'b',
        '2': 'c',
        length: 3
    };

    // ES5
    var arr1 = [].slice.call(arrayLike); // ["a", "b", "c"]

    console.log(arr1);

    // ES6
    let arr2 = Array.from(arrayLike); // ["a", "b", "c"]

    console.log(arr2);
}

console.log('----------------------------------');

{
    // 将类数组对象arguments转换为真正的数组对象
    function fn() {
        {
            // ES5
            var args = [].slice.call(arguments);
            console.log(args)
        }

        {
            // ES6
            let args = Array.from(arguments);
            console.log(args)
            // ...
        }
    }

    fn();
}

console.log('----------------------------------');

{
    let arrayLike = {
        '0': 0,
        '1': 1,
        '2': 2,
        length: 3
    };

    console.log(Array.from(arrayLike, x => x * x)); // [0, 1, 4]
    //相当于
    console.log(Array.from(arrayLike).map(x => x * x)); // [0, 1, 4]
}